How Generali Restored 98% Data Accuracy After a Failed Analytics Migration - Lessons on Link Survival Rate

Why this story matters: the hidden cost of a busted analytics migration

When Generali's analytics migration produced inconsistent reporting and broken attribution, the immediate impact was obvious - business leaders lost trust in numbers they used to make decisions. The deeper cost arrived later: teams stopped trusting analytics outputs, marketing spend lagged, and cross-functional projects stalled while engineers chased phantom errors. Restoring 98% data accuracy was not only a technical win. It rebuilt confidence. It forced a redefinition of what a "link survival rate" means in real-world migrations - and that new definition shaped testing, monitoring, and data contracts across the organization.

Read this list because you'll get concrete approaches that worked at scale, including pragmatic trade-offs and a realistic timeline. This is not theory. Each item contains tactics you can apply to a migration that is already failing, or to one you are planning right now. Expect specific diagnostics, mapping strategies, and governance changes that drive measurable restoration of accuracy - fast.

image

Diagnosis #1: Identify the true failure modes before you fix anything

Don't start reprocessing data until you know what broke. At Generali the team split failures into three categories: mapping loss (source IDs not matched to targets), schema drift (fields changed or removed), and event transformation errors (values rewritten incorrectly). Each has a different remedy. Mapping loss needs identity reconciliation. Schema drift needs change contracts and backward-compatible ETL. Transformation errors might need one-off fixes or a rollback.

Practical steps

    Run a fingerprint audit: compute checksums or hash counts at each pipeline stage and compare distributions. Segment errors by source system, by time window, and by event type to isolate where the break started. Prioritize by business impact: fix revenue and conversion metrics first, then lower-value telemetry.

Example: a sudden 40% drop in conversion events traced back to a renamed field in the ingestion schema. The field rename was benign in the pipeline but broke attribution logic in downstream models. Flagging schema changes automatically would have prevented the problem. Build a short checklist to run when numbers diverge - this saves days of guesswork.

Recovery Strategy #1: Reconcile identifiers with multi-layer matching

Identifier mismatch was the largest single cause of data loss in the Generali incident. The migration introduced new GUIDs and dropped some legacy keys. The recovery required a layered matching strategy: deterministic where possible, probabilistic when necessary. Deterministic matching uses unambiguous fields - user ID, transaction ID, or hashed email. Probabilistic matching uses combinations of fields - IP plus user agent plus timestamp - to infer links when direct keys are gone.

Implementation details

    Create a Golden Table: a canonical mapping between legacy IDs and new IDs with timestamps and confidence scores. Use fuzzy matching libraries (for example, token-based matching or edit-distance thresholds) for names and addresses. Store match provenance: tag each reconciled record with method used and confidence, so downstream teams can filter by reliability.

Example: using deterministic matches restored 75% of user links immediately. Another 20% came from probabilistic rules tuned to a 95% precision threshold. That left 5% of links unresolved - these were flagged for targeted manual review or accepted as low-impact loss. Accepting that small, well-documented gap helped the organization stop chasing diminishing returns.

Recovery Strategy #2: Rebuild pipelines using idempotent, auditable jobs

Once you know the failure modes and have a mapping strategy, reprocessing must be safe to run repeatedly. Generali re-engineered ETL jobs to be idempotent so a failed run could be retried without duplicating events. They also added step-level checksums and checkpoints so teams could resume from the last verified state rather than reprocessing everything. That sped recovery and limited collateral damage.

Key engineering practices

    Make transformations deterministic: ensure the same input always produces the same output. Persist intermediate artifacts with signatures - if you need to re-run, validate intermediate tables before continuing. Use small batch windows for reprocessing to isolate hotspots and monitor progress in near real time.

Example: a non-idempotent job previously doubled up sessions when reprocessed. Fixing the deduplication logic and adding transactional commits eliminated that problem, allowing an aggressive re-run plan that restored much of the lost data within days rather than weeks.

Four Dots

Rethinking metrics: what link survival rate should actually measure

Before the incident, link survival rate was a brittle metric: percentage of original links that matched after migration. That number was useful, but it hid nuance. After recovery, Generali adopted a multi-dimensional definition: survival rate by confidence band, by business-critical event, and by time-window. That provided actionable insights - for example, a 96% survival rate overall might hide a 72% survival rate for high-value purchases.

A better measurement approach

    Report survival rate by confidence tier: deterministic, high-confidence probabilistic, low-confidence probabilistic, and unresolved. Include business weighting: multiply survival by event value to get a weighted survival rate for revenue-sensitive metrics. Track survival rate over time windows (daily/weekly) to spot regressions early.

Contrarian view: aiming for 100% survival is often wasteful. Some links are low value, expensive to recover, or impossible to reconcile. Prioritize recovery that maximizes business impact. In practice, setting a target like 95% weighted survival for revenue events leads to better allocation of engineering resources than a blanket 100% goal.

Governance and culture: embed migration thinking into everyday operations

Technically restoring data is one thing. Sustaining accuracy requires process change. Generali introduced data change contracts, mandatory pre-migration dry runs, and cross-team signoffs for schema changes. They also created a small rapid-response team that owns triage during migrations. These changes reduced future incidents and shortened mean time to detection.

Operational rules that stick

    Require a signed data contract for any schema change that includes backward compatibility statements and a rollback plan. Automate canary deployments of pipeline changes with live verification against golden datasets. Maintain a migration playbook with runbooks for rollback, reprocessing, and stakeholder communication.

Contrarian viewpoint: some teams treat governance as red tape. Generali found that a lean, rule-based approach works better than heavyweight approvals. Make contracts lightweight but testable. Automate enforcement where possible so teams don't bypass processes when under time pressure.

Your 30-Day Action Plan: Implementing these data recovery and survival strategies now

Use this checklist as a sprint plan. Execute items in parallel where possible. Timeline below assumes you have a small cross-functional team: one data engineer, one analyst, one product owner, and one QA/tester or SRE.

image

Days 1-3: Triage and containment

    Run a top-level discrepancy report: what key metrics moved and by how much? Isolate sources and stop any pipeline changes that could worsen the situation. Meet stakeholders and set expectation: you'll provide a recovery ETA within 48 hours.

Days 4-10: Root cause and quick fixes

    Perform the fingerprint audit and identify mapping losses, schema drift, and transformation errors. Apply quick deterministic reconciliation to recover the highest-value links. Patch broken transformations and run a safe reprocessing of the most critical datasets.

Days 11-20: Systematic reconciliation

    Build the Golden Table for ID mappings and implement probabilistic matching rules with provenance tags. Refactor ETL jobs to be idempotent and add checkpoints. Reprocess remaining data in controlled batches and validate results against golden datasets.

Days 21-30: Measurement, monitoring, and governance

    Adopt the multi-dimensional link survival rate metric and publish both overall and weighted survival. Implement automated alerts for survival-rate regressions and schema changes. Create a lightweight migration playbook and enforce data change contracts for future updates.

Final note: your goal is not perfection on day 30. It is restoring the accuracy that matters to the business and putting processes in place to prevent recurrence. In Generali’s case, that meant 98% accuracy restored quickly, and a new way of measuring link survivability that prioritized impact. If you follow the steps above, you will close most of the gap and be in a strong position to handle the remaining edge cases without panic.